# 2、做一个学生点名系统，系统里支持：存入学生、更改学生、删除学生、点到学生姓名方法
# 存入学生（姓名、年龄、家庭地址、手机号）： 存入成功后，提示xxx存入成功
# 更改学生（姓名、年龄、家庭地址、手机号）：可以修改学生内容的任意一个字段
# 删除学生：删除的学生将不在展示
# 展示全部学生：可以看到全部的学生姓名
# 学生姓名：随机抽取任意一个存在的学生信息，然后打印：到！。举例： 刘闯到！
# 以上内容，需要连接数据库，每次的数据都需要增、删、改、查去做
import pymysql
import traceback # 可以将报错信息打印在控制台上面

# class DB:
#     def __init__(self,user,password,host,database):
#         self.user = user
#         self.password = password
#         self.host = host
#         self.database = database
#     def connect(self):
#         # 创建数据库对象
#         self.db = pymysql.connect(user = self.user,password= self.password,host=self.host,database=self.database,cursorclass =
#         pymysql.cursors.DictCursor)
#         # 通过数据库对象创建游标
#         self.cursor = self.db.cursor()
#     def close(self):
#         self.cursor.close()
#         self.db.close()
#     def search(self,type:int,sql):
#         """
#         :param type: 1 找到符合一条的数据  2 找到符合的全部数据
#         :return:
#         """
#         # 先去调用连接数据库的方法
#         self.connect()
#         result = None
#         if type == 1:
#             try:
#                 self.cursor.execute(sql)
#                 result = self.cursor.fetchone()
#                 self.close()
#                 return result
#             except:
#                 self.db.rollback() # 如果出现了异常，就回滚操作
#                 traceback.print_exc()
#                 return result
#         elif type == 2:
#             try:
#                 self.cursor.execute(sql)
#                 result = self.cursor.fetchall()
#                 self.close()
#                 return result
#             except:
#                 self.db.rollback() # 如果出现了异常，就回滚操作
#                 traceback.print_exc()
#                 return result
#     def __edit(self,sql):
#         self.connect()
#         try:
#             self.cursor.execute(sql)
#             self.db.commit()
#             self.close()
#         except:
#             self.db.rollback()
#             traceback.print_exc()
#     def insert(self,sql): # 新增
#         self.__edit(sql)
#     def delete(self,sql): # 删除
#         self.__edit(sql)
#     def update(self,sql): # 更新
#         self.__edit(sql)
# if __name__ == '__main__':
#     # 创建d1对象
#     d1 = DB(user='root',password='123456',host='120.26.126.215',database='zhangxin')
#     # 查询
#     # print(d1.search(2, "select * from students"))
#     # 新增
#     # d1.insert("insert into students(name,age,phone,address) values('冬冬','18','123123','沈阳')")
#     # d1.insert("insert into students(name,age,phone,address) values('毛毛','18','345345','沈阳')")
#     # d1.insert("insert into students(name,age,phone,address) values('豆豆','18','456456','内蒙')")
#     # 查询
#     # print(d1.search(1,"select * from students where name='鑫鑫'"))
#     # 删除
#     # d1.delete("delete from students where id=4")
#
#     # 更新操作
#     # d1.update("update students set name='鑫鑫' where name='张鑫plus'")
#     # 查询
#     # print(d1.search(2, "select * from students"))

# 3、类作业，统计镰刀和斧头的数量，要使用类方法
class Counts:
    futou = 0
    liandao = 0
    @classmethod
    def jft(cls):
        cls.futou += 1
    @classmethod
    def jld(cls):
        cls.liandao += 1
    @classmethod
    def jishu(cls):
        print(f'镰刀：{cls.futou},斧头：{cls.liandao}')
if __name__ == '__main__':
    Counts.jft()
    Counts.jft()
    Counts.jft()
    Counts.jft()
    Counts.jld()
    Counts.jishu()

# 4、新建学生成绩管理系统，随机生成100个 学生信息插入到数据库：
# 学生信息组成：学号、学生姓名、英语成绩、数学成绩、语文成绩、班级号（班级号有：1809A，1809B，1810A，1810B）
#
# 成绩划分为：优秀，良好，中等，及格，不及格。良好比中等好。
#
# 优秀：90—100之间（包括90）
# 良好：80-90
# 中等：70-80
# 及格：60-70
# 不合格：分数低于60分。
#
# 成绩管理系统提供以下方法：
# 《1》 查询所有英语成绩为优秀的、良好的、中等、及格和不合格的学生姓名和班级号
# 《2》 查询1809A，1809B，1810A，1810B每个班级的数学成绩，并且是降序返回
# 《3》 查询1809A，1809B，1810A，1810B每个班级的总人数，并且由大到小排序返回
# 《4》 查询英语、数学、语文成绩不合格的学生姓名和对应的班级号，按照不合格的人数，由大到小排序
# class Xuesheng
#     def __init__(self):













# 5、定义一个图书管理系统类，图书可以新增、修改、删除，要求新增、修改、删除的图书，都要出现在数据库中
# 新增：图书名、作者名称、新建年月日
# 修改：图书名、作者名称、新建年月日
# 删除：图书删掉，且不在展示
# 查看：全量查询、精确查询、模糊查询需要用户传入形参来控制返回结果
import pymysql
import traceback
class Library:
    def __init__(self,user,password,host,database):
        self.user = user
        self.password = password
        self.host = host
        self.database = database
    def connect(self):
        self.db = pymysql.connect(user=self.user,password=self.password,host=self.host,database=self.database,cursorclass =
        pymysql.cursors.DictCursor)
        self.cursor =self.db.cursor()
        self.db.close()
    def search(self,type:int,sql):
        """
        :param type: 1 找到符合一条的数据  2 找到符合全部数据
        :param sql:
        :return:
        """
        self.connect()
        result = None
        if type == 1:
            try:
                self.cursor.execute(sql)
                result =self.cursor.fetchone()
                self.close()
                return result
            except:
                self.db.rollback() # 如果出现了异常，就回滚操作
                traceback.print_exc()
                return result
        elif type == 2:
            try:
                self.cursor.execute(sql)
                result = self.cursor.fetchall()
                self.close()
                return result
            except:
                self.db.rollback() # 如果出现了异常，就回滚操作
                traceback.print_exc()
                return result
    def __edit(self,sql):
        self.connect()
        try:
            self.cursor.execute(sql)
            self.db.commit()
            self.close()
        except:
            self.db.rollback()
            traceback.print_exc()
    def insert(self,sql): # 新增
        self.__edit(sql)
    def delete(self,sql): # 删除
        self.__edit(sql)
    def update(self,sql): # 更新
        self.__edit(sql)
if __name__ == '__main__':
    t1 = Library(user='root',password='123456',host='120.26.126.215',database='zhangxin')
    t1.insert("insert into library(id,name,zuozhe,shijian) values('1','三国','张鑫','2025')")
    # print(d1.search(2,"select * from library"))




















